package cn.hg.solon.plugin.activerecord.demo;

import org.noear.solon.Solon;
import org.noear.solon.annotation.Controller;

import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.template.Engine;

import cn.hg.solon.plugin.activerecord.demo.blog.BlogInterceptor;

/**
 * 启动应用
 *
 * @author 胡高
 */
public class DemoApp {
    public static void main(String[] args) {
        /*
         * 启动
         */
        Solon.start(DemoApp.class, args, app -> {
            /*
             * 全局异常处理
             */
            app.onError(t -> {
                t.printStackTrace();
            });

            /*
             * 订阅ActiveRecordPlugin初始化事件
             */
            app.onEvent(ActiveRecordPlugin.class, arp -> {
                //
                if (Solon.cfg().isDebugMode() || Solon.cfg().isFilesMode()) {
                    arp.setDevMode(true); // 启用开发模式
                    arp.setShowSql(true); // 启用SQL输出
                }
            });

            // 订阅Enjoy模板引擎初始化事件
            app.onEvent(Engine.class, eng -> {
                if (Solon.cfg().isDebugMode() || Solon.cfg().isFilesMode()) {
                    eng.setDevMode(true); // 启用开发模式，此行放前面
                }
                // 加入共享方法
                eng.addSharedFunction("/common/_layout.html", "/common/_paginate.html");
            });

            /*
             * 全局拦截器
             */
            Solon.context().beanAroundAdd(Controller.class, new BlogInterceptor());
        });
    }
}
